10 SYS36864 20 .OPT OO 30 *= $C000 40 ; DIESES PROGRAMM DEFINIERT EINEN NEUEN 42 ; BASIC-BEFEHL NAMENS !S. DIESER BEFEHL 44 ; ERZEUGT EINEN TON. 46 ; NIKOLAUS HEUSLER, MUENCHEN, 3.91 100 IBAS =776;VEKTOR FUER BASICBEFEHL 110 CHRGET =115;NAECHSTES ZEICHEN HOLEN 120 INTER =$A7AE;INTERPRETERSCHLEIFE 130 OLDBAS =$A7E7;ALTEN BASICBEFEHL BEARBEITEN 150 SYNTAX =$AF08;SYNTAX ERROR 160 SID =54272;SOUNDCHIP BASISADRESSE 200 ; --- NEUEN BEFEHL DEFINIEREN 300 LDA #NEUBEF;ZEIGER AUF NEUE BEFEHLSROUTINE 310 STA IBAS:STY IBAS+1;VEKTOR VERBIEGEN 320 RTS;UND FERTIG 330 ; --- NEUEN BASICBEFEHL AUSFUEHREN 340 NEUBEF JSR CHRGET;ERSTES ZEICHEN HOLEN 350 CMP #33;WAR ES DAS AUSRUFEZEICHEN 360 BEQ CALL;JA, DANN NEUER BEFEHL 370 ORA #0;SONST FLAGS SETZEN:JMP OLDBAS;UND NORMAL WEITERMACHEN 380 ; --- AUSRUFEZEICHEN ERKANNT 390 CALL JSR CHRGET;ZEICHEN NACH '!' HOLEN 400 CMP #83;BUCHSTABE 'S' TESTEN 410 BEQ STIMMT;JA, DANN !S BEFEHL 420 JMP SYNTAX;SONST SYNTAX ERROR AUSGEBEN, FERTIG 430 ; --- !S BEFEHL - TON AUSGEBEN 440 STIMMT LDA #0:LDX #24;SID-REGISTER LOESCHEN 450 CLRSID STA SID,X:DEX;LOESCH-SCHLEIFE:BPL CLRSID;ALLE REGISTER AUF NULL 460 LDA #15:STA SID+24;LAUTSTAERKE 15 470 LDA #100:STA SID+1;TONHOEHE FESTLEGEN 480 LDA #240:STA SID+6;WELLENFORM 490 LDA #17:STA SID+4;TON EINSCHALTEN 500 LDX #0:LDY #0;WARTESCHLEIFE 510 WAIT NOP:DEX:BNE WAIT:DEY:BNE WAIT;WARTET CA. 1/2 SEKUNDE 520 LDA #16:STA SID+4;TON AUSSCHALTEN 530 JSR CHRGET:JMP INTER;BEFEHL FERTIG, WEITER WIE GEHABT